package main

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

//2.1定义模型
type User struct {
	gorm.Model //ID CreateAt UpdateAt  DeletedAt
	Name       string
	Age        int64
	Active     bool
}

type User1 struct {
	ID     int64
	Name   string
	Age    int64
	Active bool
}

func main() {
	//1.连接mysql数据库
	db, err := gorm.Open("mysql", "root:123456@(127.0.0.1)/db1?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	//3.把模型与数据库中的表对应起来
	//db.AutoMigrate(&User{})
	db.AutoMigrate(&User1{})

	//u1 := User1{Name: "qimi45", Age: 120, Active: true}
	//db.Create(&u1) //在数据库中创建了一条记录
	//
	//u2 := User1{Name: "qaz", Age: 10, Active: true}
	//db.Create(&u2) //在数据库中创建了一条记录

	//4.删除
	//var u = User{}
	////u.ID = 3
	//u.Name="wsx"
	//db.Debug().Delete(&u)

	//db.Debug().Where("name=?","wsx").Delete(User{})
	//db.Debug().Delete(&User{},"age=?",30)

	//var u1 []User
	//db.Debug().Where("age=30").Find(&u1)//这样无法查询单到删除的信息
	//fmt.Printf("%#v",u1)
	//db.Debug().Unscoped().Where("age=30").Find(&u1)//这样可以查询单到删除的信息
	//fmt.Printf("%#v",u1)

	//物理删除
	//db.Debug().Unscoped().Where("name=?","wsx").Delete(&User{})

	//没有gorm.Model，没有软连接删除
	var user1 []User1
	db.Debug().Unscoped().Where("age=10").Delete(&user1)//这样可以查询单到删除的信息
}
